package com.bbva.kyfb.kyfbdto.firmas.fachada.v01;

import java.io.Serializable;

import javax.validation.constraints.Digits;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Informacion necesaria para poder enviar por sms el código.
 *
 * @author xe35008
 * @version 1.0
 */
@XmlRootElement
public class InfoSendNotificationRequest implements Serializable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;

	/** Canal. */
	private String sCanal;
	/** Banco Interno. */
	private String sBancoInt;

	/** Empresa. */
	private String sReferencia;

	/** Necesario para invocar a KDAM y poder saber quien queda por firma el fichero. */
	private String sCodBancoProd;

	/** Necesario para invocar a KDAM y poder saber quien queda por firma el fichero. */
	private String sCodProducto;

	/** Necesario para invocar a KDAM y poder saber quien queda por firma el fichero. */
	private String sCodSubproducto;

	/** Código de usuario que ha intervenido en el proceso de firma del fichero. */
	private String sCodUsuario;

	/** Teléfono del usuario. */
	private String sDatosContacto;

	/** Mensaje que se envía al usuario. */
	private String sMensaje;

	/** Tipo de validación de credenciales que usara. */
	private String sTipoValidacion;

	/**
	 * Instantiates a new components for sign request.
	 */
	public InfoSendNotificationRequest() {}

	/**
	 * Gets the s canal.
	 *
	 * @return the sCanal
	 */
	@NotEmpty
	@Digits(fraction=0,integer=4)
	@Length(min=4,max=4)
	public String getsCanal() {
		return sCanal;
	}

	/**
	 * Sets the s canal.
	 *
	 * @param sCanal the sCanal to set
	 */
	public void setsCanal(final String sCanal) {
		this.sCanal = sCanal;
	}

	/**
	 * Gets the s banco int.
	 *
	 * @return the sBancoInt
	 */
	@NotEmpty
	@Length(min=4,max=4)
	@Digits(fraction = 0, integer = 4)
	public String getsBancoInt() {
		return sBancoInt;
	}

	/**
	 * Sets the s banco int.
	 *
	 * @param sBancoInt the sBancoInt to set
	 */
	public void setsBancoInt(final String sBancoInt) {
		this.sBancoInt = sBancoInt;
	}

	/**
	 * Gets the s referencia.
	 *
	 * @return the sReferencia
	 */
	@NotEmpty
	@Length(min=8,max=8)
	@Digits(fraction=0,integer=8)
	public String getsReferencia() {
		return sReferencia;
	}

	/**
	 * Sets the s referencia.
	 *
	 * @param sReferencia the sReferencia to set
	 */
	public void setsReferencia(final String sReferencia) {
		this.sReferencia = sReferencia;
	}

	/**
	 * Gets the s cod banco prod.
	 *
	 * @return the sCodBancoProd
	 */
	@NotEmpty
	@Length(min=1,max=4)
	public String getsCodBancoProd() {
		return sCodBancoProd;
	}

	/**
	 * Sets the s cod banco prod.
	 *
	 * @param sCodBancoProd the sCodBancoProd to set
	 */
	public void setsCodBancoProd(final String sCodBancoProd) {
		this.sCodBancoProd = sCodBancoProd;
	}

	/**
	 * Gets the s cod producto.
	 *
	 * @return the sCodProducto
	 */
	@NotEmpty
	@Length(min=4,max=4)
	public String getsCodProducto() {
		return sCodProducto;
	}

	/**
	 * Sets the s cod producto.
	 *
	 * @param sCodProducto the sCodProducto to set
	 */
	public void setsCodProducto(final String sCodProducto) {
		this.sCodProducto = sCodProducto;
	}

	/**
	 * Gets the s cod subproducto.
	 *
	 * @return the sCodSubproducto
	 */
	@NotEmpty
	@Length(min=1,max=4)
	public String getsCodSubproducto() {
		return sCodSubproducto;
	}

	/**
	 * Sets the s cod subproducto.
	 *
	 * @param sCodSubproducto the sCodSubproducto to set
	 */
	public void setsCodSubproducto(final String sCodSubproducto) {
		this.sCodSubproducto = sCodSubproducto;
	}

	/**
	 * Gets the s cod usuario.
	 *
	 * @return the sCodUsuario
	 */
	@NotEmpty
	@Length(min=1,max=8)
	public String getsCodUsuario() {
		return sCodUsuario;
	}

	/**
	 * Sets the s cod usuario.
	 *
	 * @param sCodUsuario the sCodUsuario to set
	 */
	public void setsCodUsuario(final String sCodUsuario) {
		this.sCodUsuario = sCodUsuario;
	}

	/**
	 * Gets the s datos contacto.
	 *
	 * @return the sDatosContacto
	 */
	//@Pattern(regexp="\\+*[0-9]{4}[0-9\\s]*")
	public String getsDatosContacto() {
		return sDatosContacto;
	}

	/**
	 * Sets the s datos contacto.
	 *
	 * @param sDatosContacto the sDatosContacto to set
	 */
	public void setsDatosContacto(final String sDatosContacto) {
		this.sDatosContacto = sDatosContacto;
	}

	/**
	 * Gets the s mensaje.
	 *
	 * @return the sMensaje
	 */
	@NotEmpty
	public String getsMensaje() {
		return sMensaje;
	}

	/**
	 * Sets the s mensaje.
	 *
	 * @param sMensaje the sMensaje to set
	 */
	public void setsMensaje(final String sMensaje) {
		this.sMensaje = sMensaje;
	}

	/**
	 * Gets the s tipo validacion.
	 *
	 * @return the sTipoValidacion
	 */
	@NotEmpty
	@Pattern(regexp="COT01|FOT01")
	public String getsTipoValidacion() {
		return sTipoValidacion;
	}

	/**
	 * Sets the s tipo validacion.
	 *
	 * @param sTipoValidacion the sTipoValidacion to set
	 */
	public void setsTipoValidacion(final String sTipoValidacion) {
		this.sTipoValidacion = sTipoValidacion;
	}

	/**
	 * Gets the serialversionuid.
	 *
	 * @return the serialversionuid
	 */
	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return new StringBuilder("InfoSendNotificationRequest [sCanal=").append(sCanal)
			.append(", sBancoInt=").append(sBancoInt)
			.append(", sReferencia=").append(sReferencia)
			.append(", sCodBancoProd=").append(sCodBancoProd)
			.append(", sCodProducto=").append(sCodProducto)
			.append(", sCodSubproducto=").append(sCodSubproducto)
			.append(", sCodUsuario=").append(sCodUsuario)
			.append(", sDatosContacto=").append(sDatosContacto)
			.append(", sMensaje=").append(sMensaje)
			.append(", sTipoValidacion=").append(sTipoValidacion).append("]").toString();
	}

}
